Apparatus, system, and method for accessing a preferred path through a storage controller

ABSTRACT

An apparatus, system, and method are disclosed for accessing a preferred path through a storage controller. A request module receives a request from a host to identify a preferred path from the host to a control unit image. A response module reports the preferred path to the host. A connection module connects the host through the preferred path to the control unit image. In one embodiment, a detection module detects a failure of a first interconnection module comprising the preferred path. The connection module may re-connect the host to the control unit image through a non-preferred path comprising a second interconnection module in response to the failure of the first interconnection module.

BACKGROUND OF THE INVENTION

1. Field of the Invention

This invention relates to accessing a path and more particularly relatesto accessing a preferred path through a storage controller.

2. Description of the Related Art

A storage controller is typically employed to connect one or more hostssuch as servers, mainframe computers, and the like with one or morestorage devices such as hard disk drives, magnetic tape drives, opticalstorage drives, and the like. The storage controller includes aninterconnection module. The interconnection module includes one or morehost ports each configured to connect through a first communicationchannel to the host. In addition, the interconnection module alsoincludes one or more logical devices. Each logical device may emulate astorage device such as a hard disk drive and the like. In addition, eachlogical device may be comprised of portions of one or more storagedevices. The host may connect to and access the logical device throughthe interconnection module.

The storage controller may include a plurality of redundantinterconnection modules. Each interconnection module may connect thehost to the logical device. Thus if a first interconnection module failsa second interconnection module may allow the host to connect to thelogical device with minimal or no interruption. Each interconnectionmodule may communicate through an internal communication channel with atleast one other interconnection module.

The host may request a path to the logical device and be assigned one ofthe available paths. For example, the host may connect to the logicaldevice through the first interconnection module, the internalcommunication channel between the first and the second interconnectionmodule, and from the second interconnection module to the logicaldevice. Unfortunately, such a connection between the host and thelogical device may have significantly lower performance than a preferredpath such as a connection directly from the host through the firstinterconnection module to the logical device.

From the foregoing discussion, it should be apparent that a need existsfor an apparatus, system, and method that connect a host to a logicaldevice through a preferred path. Beneficially, such an apparatus,system, and method would improve the performance of communicationsbetween the host and the logical device.

SUMMARY OF THE INVENTION

The present invention has been developed in response to the presentstate of the art, and in particular, in response to the problems andneeds in the art that have not yet been fully solved by currentlyavailable methods of accessing a path between a host and a storagedevice. Accordingly, the present invention has been developed to providean apparatus, system, and method for accessing a path that overcome manyor all of the above-discussed shortcomings in the art.

A system of the present invention is presented to access a path. Thesystem may be embodied in a storage array. In particular, the system, inone embodiment, includes a host, a storage controller comprising aplurality of redundant interconnection modules, one or more control unitimage (“CUI”) with one or more logical devices that are emulated by thestorage controller, a request module, a response module, a detectionmodule, and a connection module.

The host may be a server, a mainframe computer, or the like. The hostaccesses data stored on one or more logical devices through the storagecontroller. The storage controller provides for the emulation of one ormore logical devices. Each logical device appears to the attached hostas a storage device, but the emulation may virtualize the storagecapacity provided by the storage devices attached to the storagecontroller to provision the capacity for the logical device. The logicaldevice's capacity may reside on one or more storage devices, each ofwhich may be a disk, an array of disks, or another such physical storagedevice. The management of a given logical device maybe performed withina single interconnection module at any given time such that a host thatwishes to communicate with that logical device must communicate with themanaging interconnection unit. The interconnection modules are redundantin the sense that the failure of one interconnection module causes themanagement of the logical devices on that interconnection module to betransferred to one of the remaining interconnection modules.

Certain communication paths between the host and the storage controllermay provide a more direct path to a given interconnection unit. Forinstance, the physical communication paths between the host and thestorage controller may physically reside on a given interconnectionmodule. In this case, access to a given interconnection module is directwhen accessing communication paths on that interconnection module andindirect when accessing other communication paths on otherinterconnection modules. In another instance, a physical communicationpath may provide the ability to communicate with more than oneinterconnection module, but the communication through the set ofphysical paths on the storage controller may operate more efficientlysuch as with better bandwidth if communications for specificinterconnection modules are directed through specific physical paths.

A request module associated with a logical device receives a requestfrom a host to identify a plurality of communication paths to be usedwhen the host is communicating with that logical device. In oneembodiment, a group of up to 256 logical devices are aggregated into aCUI wherein the CUI functions as a management group for the logicaldevices. For simplicity, a given CUI can be managed by a giveninterconnection module such that the communication paths which are bestsuited for communication with that interconnection module are also thecommunication paths that are best suited for communication with all thelogical devices on that CUI. As such, the response provided by theresponse module of any logical device on a CUI identifies the pluralityof communication paths including one or more preferred paths. Thisreduces the amount of preferred path information that must becommunicated between the host and the logical devices as the preferredpath information obtained from one logical device on a CUI applies toall logical devices on the CUI.

An apparatus to access a path is also presented. The apparatus isprovided with a logic unit containing a plurality of modules configuredto functionally execute the necessary steps of receiving a request,reporting a path, and connecting through a preferred path. These modulesin the described embodiments include a request module, a responsemodule, and a connection module.

The response module reports each path to the host. In addition, theresponse module reports each path's status relative to the CUI to thehost. In one embodiment, the preferred path is any path from the host tothe CUI that meets a specified performance requirement. In an alternateembodiment the preferred path is any path from the host to the CUI thatmeets a specified routing requirement. In a certain embodiment, thepreferred path is the available path configured for the bestcommunication performance.

The connection module connects the host through a preferred path to theCUI. In one embodiment, the connection module connects the host inresponse to a request from the host. In an alternate embodiment, theconnection module connects the host to the CUI through the preferredpath in response to receiving the preferred path identifier from theresponse module. The apparatus connects the host to the CUI through apreferred path, improving the communications performance between thehost and the CUI.

A method of the present invention is also presented for accessing apath. The method in the disclosed embodiments substantially includes thesteps necessary to carry out the functions presented above with respectto the operation of the described apparatus and system. In oneembodiment, the method includes receiving a request, reporting aplurality of paths, and connecting through a preferred path.

A request module receives a request from a host to identify a pluralityof paths from the host to a CUI. A response module reports each path andeach path's status relative to the CUI to the host. A connection moduleconnects the host through the preferred path to the CUI. In oneembodiment, a detection module detects a failure of a firstinterconnection module comprising the preferred path. The connectionmodule may re-connect the host to the CUI through a non-preferred pathin response to the failure of the first interconnection module.

Reference throughout this specification to features, advantages, orsimilar language does not imply that all of the features and advantagesthat may be realized with the present invention should be or are in anysingle embodiment of the invention. Rather, language referring to thefeatures and advantages is understood to mean that a specific feature,advantage, or characteristic described in connection with an embodimentis included in at least one embodiment of the present invention. Thus,discussion of the features and advantages, and similar language,throughout this specification may, but do not necessarily, refer to thesame embodiment.

Furthermore, the described features, advantages, and characteristics ofthe invention may be combined in any suitable manner in one or moreembodiments. One skilled in the relevant art will recognize that theinvention can be practiced without one or more of the specific featuresor advantages of a particular embodiment. In other instances, additionalfeatures and advantages may be recognized in certain embodiments thatmay not be present in all embodiments of the invention.

The present invention identifies a plurality of paths to a CUI inresponse to a host request. In addition, the present invention connectsthe host to the CUI through a preferred path. The present inventionimproves the performance of communication between the host and the CUIby allowing the host to access the CUI through the preferred path. Thesefeatures and advantages of the present invention will become more fullyapparent from the car following description and appended claims, or maybe learned by the practice of the invention as set forth hereinafter.

BRIEF DESCRIPTION OF THE DRAWINGS

In order that the advantages of the invention will be readilyunderstood, a more particular description of the invention brieflydescribed above will be rendered by reference to specific embodimentsthat are illustrated in the appended drawings. Understanding that thesedrawings depict only typical embodiments of the invention and are nottherefore to be considered to be limiting of its scope, the inventionwill be described and explained with additional specificity and detailthrough the use of the accompanying drawings, in which:

FIG. 1 is a schematic block diagram illustrating one embodiment of apath access system in accordance with the present invention;

FIG. 2 is a schematic block diagram illustrating one embodiment of astorage controller of the present invention;

FIG. 3 is a schematic block diagram illustrating one embodiment of astorage controller system of the present invention;

FIG. 4 is a schematic flow chart diagram illustrating one embodiment ofa path accessing method of the present invention;

FIG. 5 is a schematic flow chart diagram illustrating one embodiment ofa path re-connection method of the present invention;

FIG. 6 is a schematic block diagram illustrating one embodiment of acontrol unit image report of the present invention; and

FIG. 7 is a schematic block diagram illustrating one embodiment of apath report of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

Many of the functional units described in this specification have beenlabeled as modules, in order to more particularly emphasize theirimplementation independence. For example, a module maybe implemented asa hardware circuit comprising custom very large scale integration(“VLSI”) circuits or gate arrays, off-the-shelf semiconductors such aslogic chips, transistors, or other discrete components. A module mayalso be implemented in programmable hardware devices such as fieldprogrammable gate arrays, programmable array logic, programmable logicdevices or the like.

Modules may also be implemented in software for execution by varioustypes of processors. An identified module of executable code may, forinstance, comprise one or more physical or logical blocks of computerinstructions, which may, for instance, be organized as an object,procedure, or function. Nevertheless, the executables of an identifiedmodule need not be physically located together, but may comprisedisparate instructions stored in different locations which, when joinedlogically together, comprise the module and achieve the stated purposefor the module.

Indeed, a module of executable code may be a single instruction, or manyinstructions, and may even be distributed over several different codesegments, among different programs, and across several memory devices.Similarly, operational data may be identified and illustrated hereinwithin modules, and may be embodied in any suitable form and organizedwithin any suitable type of data structure. The operational data may becollected as a single data set, or may be distributed over differentlocations including over different storage devices, and may exist, atleast partially, merely as electronic signals on a system or network.

Reference throughout this specification to “one embodiment,” “anembodiment,” or similar language means that a particular feature,structure, or characteristic described in connection with the embodimentis included in at least one embodiment of the present invention. Thus,appearances of the phrases “in one embodiment,” “in an embodiment,” andsimilar language throughout this specification may, but do notnecessarily, all refer to the same embodiment.

Furthermore, the described features, structures, or characteristics ofthe invention may be combined in any suitable manner in one or moreembodiments. In the following description, numerous specific details areprovided, such as examples of programming, software modules, userselections, network transactions, database queries, database structures,hardware modules, hardware circuits, hardware chips, etc., to provide athorough understanding of embodiments of the invention. One skilled inthe relevant art will recognize, however, that the invention can bepracticed without one or more of the specific details, or with othermethods, components, materials, and so forth. In other instances,well-known structures, materials, or operations are not shown ordescribed in detail to avoid obscuring aspects of the invention.

FIG. 1 is a schematic block diagram illustrating one embodiment of apath access system 100 of the present invention. The system 100 includesone or more hosts 105, a storage controller 130 comprising one or moreinterconnection modules 110 and one or more CUIs 135, and one or morestorage devices 160. Each CUI 135 is a virtual module emulated by thestorage controller 130. In addition, each CUI 135 is depicted with oneor more logical devices 170. Although the system 100 is depicted withtwo interconnection modules 110, three CUIs 135, six logical devices170, and three storage devices 160, any number of interconnectionmodules 110, CUIs 135, logical devices 170, and storage devices may beemployed.

The host 105 may be a server, a mainframe computer, or the like. In oneembodiment, the host 105 is a zSeries mainframe such as a z/390manufactured by International Business Machines Corporation (“IBM”) ofArmonk, N.Y. The host 105 accesses data stored on the logical devices170 through the storage controller 130. Each logical device 170 mayemulate a storage device 160 such as a hard disk drive, an opticalstorage device, a magnetic tape drive, or the like. In addition, eachlogical device 170 may comprise portions of one or more storage devices160. In one embodiment, the storage controller 130 is configured as aredundant array of independent disk (“RAID”) controller. In an alternateembodiment, the storage controller 130 is configured as a data cache. Ina certain embodiment, the storage controller 130 is a DS/8000 or DS/6000storage facility manufactured by IBM of Armonk, N.Y.

The storage controller 130 organizes the logical devices 170 as one ormore CUIs 135. The CUI 135 is a management group. In one embodiment, aCUI 135 comprises up to two hundred and fifty-six (256) logical devices170. For example, the first CUI 135 a is depicted as comprising thefirst logical device 170 a and the second logical device 170 b. Eachlogical device 170 virtualizes one or more storage devices 160 such ashard disk drives, optical storage devices, and the like.

The interconnection module 110 manages one or more CUIs 135. The host105 stores data to and retrieves data from the logical device 170through the interconnection module 110. Each interconnection module 110may manage each CUI 135. For example, the first interconnection module110 a is depicted as managing the first and third CUI 135 a, 135 c. Ifthe first interconnection module 110 a fails, the management of thefirst and third CUI 135 a, 135 c may be transferred to the secondinterconnection module 110 b.

The host 105 accesses the logical device 170 through a path. The pathmay comprise one or more communication channels. In the depictedembodiment, the path includes one or more host communication channels155 between the first and second host 105 a, 105 b and the storagecontroller 130. The host communication channel 155 maybe a networkconnection or the like. The path also includes one or moreinterconnection modules 110 of the storage controller 130. Eachinterconnection module 110 may be configured with a plurality of hostports for connecting to the host communication channel 155. Thus thefirst host 105 a may communicate with the first logical device 170 a ofthe first CUI 135 a through a host port, the first host communicationchannel 155 a, and the first interconnection module 110 a.

Each interconnection module 110 is redundant and may perform theinterconnection function of at least one other interconnection module110. In addition, each interconnection module 110 may communicate withat least one other interconnection module 110 through an internalcommunication channel 165. The internal communication channel 165 may bea digital electrical signal bus or the like. Thus if the firstinterconnection module 110 a fails, the functions of the firstinterconnection module 110 a may be performed by the secondinterconnection module 110 b.

For example, the first host 105 a may communicate with the third logicaldevice 170 c of the second CUI 135 b through a first path comprising thesecond host communication channel 155 b, and the second interconnectionmodule 110 b. If the second host communication channel 155 b fails, thefirst host 105 a may continue to communicate with the third logicaldevice 170 c through a second path including the first hostcommunication channel 155 a, the first interconnection module 110 a, andthe internal communication channel 165. If the second interconnectionmodule 110 b fails, management of the second CUI 135 b and the third,fourth, and fifth logical devices 170 c, 170 d, 170 e are transferred tothe first interconnection module 110 a and the first host 105 a maycontinue to communicate with the third, fourth, and fifth logicaldevices 170 c, 170 d, 170 e through the second path including the firsthost communication channel 155 a and the first interconnection module110 a.

Both the first path and the second path are viable paths for connectingthe first host 105 a and the third logical device 170 c. Each path mayprovide a different level of communications performance forcommunications between the first host 105 a and the third logical device170 c. For example, because the second path includes the internalcommunication channel 165, the second path may have lower communicationsperformance than the first path. Unfortunately, because each pathbetween a host 105 and a CUI 135 is valid, the host 105 may connect tothe CUI 135 through a path with lower communications performance. Thepresent invention supports the host 105 accessing the CUI 135 through apreferred path such as a higher communications performance path.

The storage controller 130 receives a request from the host 105 toidentify a plurality of host communication paths 155 from the host 105to the CUI 135. The storage controller 130 reports each path to the host105 and the status of the path. The status identifies each hostcommunication path 155 as preferred or non-preferred. In one embodiment,the status identifies if the path is available. For example, the firsthost 105 a may communicate a request to the storage controller 130 forpaths to the first CUI 135 a and the storage controller 130 may reportone or more paths including a path with a preferred status or preferredpath comprising the first host communication channel 155 a and a pathwith non-preferred status or non-preferred path comprising the secondhost communication channel 155 b. This provides sufficient informationto allow the host 105 to direct I/O requests for logical devices 170 ona given CUI 135 to the storage controller 130 through communicationpaths 155 that are preferred for that CUI 135. The host 105 typicallyconnects to the storage controller 130 through all available paths butI/O requests for a given CUI 135 are directed through the preferredpaths as long as they are available. A given communication path may bepreferred for certain CUIs 135 and non-preferred for other CUIs 135.

FIG. 2 is a schematic block diagram illustrating one embodiment of astorage controller 130 as depicted in FIG. 1 in accordance with thepresent invention. The storage controller 130 includes a request module215, a response module 220, a connection module 225, an initializationmodule 245, and a detection module 250.

The request module 215 receives a request from a host 105 to identifyone or more paths to a CUI 135 such as the CUI 135 of FIG. 1. In oneembodiment, the request is for all paths to a specified CUI 135. In analternate embodiment, the request is for all CUIs 135 relative to aspecified path where the status of the specified path is provide foreach CUI 135.

In one embodiment, a host port identifier uniquely identifies each porton the storage controller 130 where a host communication channel 155 canbe attached. For example, a host port may be identified by the portidentifier eight (8) and may be associated with a first interconnectionmodule 10 a. This host port identifier is provided in the response to arequest for preferred path information such that it identifies the hostcommunication path 155 that the request was made over. Additionally, thepreferred or non-preferred status of each path is associated with a hostport identifier such that the host 105 can make the association betweenhost communication paths 155 the host 105 is attached to and the pathstatus information provided in the report.

The response module 220 reports one or more paths to the host 105. Inaddition, the response module 220 reports the status of each path. In acertain embodiment, a path may have a preferred status or anon-preferred status. In one embodiment, a path with a preferred statusor preferred path is any path from the host 105 to the CUI 135 thatmeets a specified performance requirement. For example, the preferredpath may meet a performance requirement such as a minimum latency timeinterval or the like. In an alternate embodiment the preferred path isany path from the host to the CUI that meets a specified routingrequirement. For example, the preferred path may be a path that does notinclude an internal communication channel 165. In a certain embodiment,the preferred path is the available path configured for the bestcommunication performance.

The specified path may be a host port. For example, the request module215 may receive a request for a specified host port. The response module220 may report that the path specified by the host port is available andpreferred for a specified CUI 135. Alternatively, the response module220 may report that the host port specifies a path that is available andnon-preferred for the specified CUI 135. In addition, the responsemodule 220 may report that the path is not available for the specifiedCUI 135.

In an alternate embodiment, the response module 220 reports thepreference status of one or more paths. For example, the response module220 may report each path associated with a specified CUI 135 and thepreference status of each path. The response module 220 may report thata path is available and preferred for the specified CUI 135.Alternatively, the response module 220 may report that a path isavailable and non-preferred for the specified CUI 135.

The connection module 225 connects the host 105 through the preferredpath to the CUI 135. In one embodiment, the connection module 225connects the host 105 in response to a request from the host 105. Forexample, the host 105 may receive a host port identifier with apreferred preference status from the response module 220. The host 105may request that the connection module 225 connect the host 105 to theCUI 135 through the host port.

In an alternate embodiment, the connection module 225 connects the host105 to the CUI 135 through the preferred path in response to receivingthe preferred path identifier from the response module 220. For example,the response module 220 may communicate the preferred path to the host105 and the connection module 225. The connection module 225 may connectthe host 105 to the CUI 135 in response to receiving the preferred path.

In one embodiment, the initialization module 245 identifies thepreferred path when the storage controller 130 is initialized. Forexample, during initialization, the initialization module 245 mayidentify a preferred path for the first CUI 135 a comprising the firsthost connection path 155 a and the first interconnection module 110 a, anon-preferred path for the first CUI 135 a comprising the second hostconnection path 155 b, the second interconnection module 110 b, theinternal communication path 165, and the first interconnection module110 a, and a preferred path for the second CUI 135 b comprising thefourth host connection path 155 d and the second interconnection module110 b, and a non-preferred path for the second CUI 135 b comprising thethird host connection path 155 c, the first interconnection module 110a, the internal communication path 165, and the second interconnectionmodule 110 b.

In one embodiment, the detection module 250 detects a failure of aninterconnection module 110. The detection module 250 may communicate thefailure detection to the connection module 225 and the connection module225 re-connect the host 105 to the CUI 135 through an alternate path.The alternate path may be a non-preferred path. For example, the firsthost 105 a may connect to the first CUI 135 a through the firstinterconnection module 110 a. The detection module 250 may detect afailure of the first interconnection module 110 a. The connection module225 may re-connect the first host 105 a to the first CUI 135 a throughthe second interconnection module 110 b and the internal communicationchannel 165 in response to the failure detection. The storage controller130 connects the host 105 to the CUI 135 through a preferred path,improving the communications performance between the host 105 and theCUI 135.

FIG. 3 is a schematic block diagram illustrating one embodiment of astorage controller system 300 of the present invention comprising thestorage controller 130 of FIGS. 1 and 2 and a host 105 and a logicaldevice 170 of FIG. 1. The storage controller 130 includes a processormodule 305, a memory module 310, a bridge module 315, a host interfacemodule 320, and a storage interface module 325.

The processor module 305, memory module 310, bridge module 315, hostinterface module 320, and storage interface module 325 may be fabricatedof semiconductor gates on one or more semiconductor substrates. Eachsemiconductor substrate may be packaged in one or more semiconductordevices mounted on circuit cards. Connections between the processormodule 305, the memory module 310, the bridge module 315, the hostinterface module 320, and the storage interface module 325 may bethrough semiconductor metal layers, substrate to substrate wiring, orcircuit card traces or wires connecting the semiconductor devices.

The memory module 310 stores software instructions and data. Theprocessor module 315 executes the software instructions and manipulatesthe data as is well know to those skilled in the art. The processormodule 305 communicates with the host interface module 320 and thestorage interface module 325 through the bridge module 315. In oneembodiment, one or more logical devices 170 comprise the storage device160.

In one embodiment, the request module 215, the response module 220, theconnection module 225, the initialization module 245, and the detectionmodule 250 comprise one or more software programs comprising softwareinstructions and data. The processor module 305 may execute the softwareinstructions and process the data to receive a request for a pluralityof paths, report each path and the status of each path, and connect thehost 105 to a preferred path.

In one embodiment, the host interface module 320 comprises one or morehost ports. For example, the host interface module 320 may be configuredas an Ethernet interface with one or more Ethernet connections. Theaddress of each host port may be the host port identifier. In oneembodiment, the storage interface module 320 comprises one or morestorage device 160 ports. For example, the storage interface module 320may be configured as a Fibre Channel interface with one or more FibreChannel connections. In an alternate embodiment, the storage interfacemodule may be an enterprise systems connectivity (“ESCON”) interface asspecified by IBM of Armonk, N.Y.

The schematic flow chart diagrams that follow are generally set forth aslogical flow chart diagrams. As such, the depicted order and labeledsteps are indicative of one embodiment of the presented method. Othersteps and methods may be conceived that are equivalent in function,logic, or effect to one or more steps, or portions thereof, of theillustrated method. Additionally, the format and symbols employed areprovided to explain the logical steps of the method and are understoodnot to limit the scope of the method. Although various arrow types andline types may be employed in the flow chart diagrams, they areunderstood not to limit the scope of the corresponding method. Indeed,some arrows or other connectors may be used to indicate only the logicalflow of the method. For instance, an arrow may indicate a waiting ormonitoring period of unspecified duration between enumerated steps ofthe depicted method. Additionally, the order in which a particularmethod occurs may or may not strictly adhere to the order of thecorresponding steps shown.

FIG. 4 is a schematic flow chart diagram illustrating one embodiment ofa path accessing method 400 of the present invention. A request module215 such as the request module 215 of FIG. 2 receives 405 a request froma host 105 such as the host 105 of FIG. 1 for a plurality of paths. Inone embodiment, the request specifies a path and queries the preferencestatus of the specified path relative to one or more CUIs 135 such asthe CUIs 135 of FIG. 1. In an alternate embodiment, the requestspecifies a CUI 135 and queries the preference status of the specifiedCUI 135 relative to one or more paths.

A response module 220 such as the response module 220 of FIG. 2 reports410 each path to a specified CUI 135 and the status of each path to thehost 105. In one embodiment, the response module 220 reports 410 apreferred path by reporting 410 the preference status of the specifiedpath. For example, the response module 220 may report 410 that thespecified path is a preferred path. Alternatively, the response module220 may report 410 that the specified path is a non-preferred path. In acertain embodiment, the response module 220 reports 410 the availabilityof the specified path. For example, the response module 220 may report410 that the specified path is available for communication.Alternatively, the response module 410 may report that the specifiedpath is unavailable for communication.

In an alternate embodiment, the response module 220 reports 410 thepreferred path by specifying one or more preferred paths to the CUI 135.For example, the response module 220 may report 410 a host portidentifier wherein the host port identifier specifies the preferredpath. In addition, the response module 220 may report 410 theavailability of the preferred path. For example, the response module 220may report 410 that the host port identifier of the preferred path andthe availability of the preferred path.

A connection module 225 such as the connection module 225 of FIG. 2connects 415 the host 105 through the preferred path to the CUI 135. Inone embodiment, the host 105 specifies the preferred path to theconnection module 225 in response to the report of the response module220. In an alternate embodiment, the connection module 225 connects 415the host 105 through the preferred path to the CUI 135 in response tothe response module 220 reporting 410 the preferred path. The method 400supports accessing the CUI 135 through a preferred path, improving theperformance of communications between the host 105 and the CUI 135.

FIG. 5 is a schematic flow chart diagram illustrating one embodiment ofa path re-connection method 500 of the present invention. A detectionmodule 250 such as the detection module 250 of FIG. 2 detects 505 afailure of a first interconnection module 110 a such as the firstinterconnection module of FIG. 1. The first interconnection module 110 amay comprise a preferred path between a host 105 and a CUI 135 such asthe host 105 and CUI 135 of FIG. 1. For example, a first host 105 a maycommunicate with a first CUI 135 a through a preferred path comprising ahost port of first interconnection module 110 a. The failure of thefirst interconnection module 110 a makes the preferred path unavailablefor communication between the first host 105 a and the first CUI 135 a.In one embodiment, a storage controller 130 such as the storagecontroller of FIG. 1 notifies the detection module 250 of the failure.In an alternate embodiment, the detection module 250 detects 505 thefailure by querying the first interconnection module 110 a.

A connection module 225 such as the connection module 225 of FIG. 2 mayre-connect 510 the host 105 to the CUI 135 through a non-preferred pathin response to the failure of the first interconnection module 110 a.For example, the connection module 225 may re-connect 510 the first host105 a to the first CUI 135 a through the second interconnection module110 b and the internal communication channel 165 of FIG. 1. The method500 supports continued communication between the host 105 and the CUI135 if the interconnection module 110 of a preferred path fails.

FIG. 6 is a schematic block diagram illustrating one embodiment of a CUIreport 600 of the present invention. The report 600 as depictedrepresents a plurality of digital data words organized as fields thatmay be transmitted as electrical, wireless, or optical signals. Asdepicted, the report 600 includes a CUI status field 605, a CUI addressfield 610, and a CUI identifier field 615. Although the fields 605, 610,615 are depicted as being of equal length, each field 605, 610, 615 maycontain any number of data bits.

The CUI status field 605 identifies the status of a specified path to aCUI 135 such as the CUI 135 of FIG. 1. In one embodiment, the CUI pathstatus field 605 encodes one or more specified status values as binarynumbers. The specified status values may include but are not limitedto 1) the CUI 135 is not configured; 2) the specified path is notavailable; 3) the specified path is preferred and available; 4) thespecified path is available and all paths are preferred; and 5) thespecified path is available and non-preferred.

The CUI address field 610 may include a logical address used by a host105 such as the host 105 of FIG. 1 to identify the CUI 135. In oneembodiment, the CUI identifier field 615 specifies the CUI 135 with astorage controller 130 such as the storage controller 130 of FIG. 1. Inone embodiment, a response module 220 such as the response module 220 ofFIG. 2 reports 410 the depicted report 600 to the host 105.

FIG. 7 is a schematic block diagram illustrating one embodiment of apath report 700 of the present invention. The report 700 is a pluralityof digital data words organized as fields that may be transmitted aselectrical, wireless, or optical signals. A response module 220 such asthe response module 220 of FIG. 2 may report 410 the path report 700 toa host 105 such as the host 105 of FIG. 1. The path report 700 includesa path status field 605 and a path identifier field 610. Although thefields 705, 710 are depicted as being of equal length, each field 705,710 may contain any number of data bits.

In one embodiment, the path status field 705 identifies a path such as apath between the host 105 and a logical device 170 such as the logicaldevice 170 of FIG. 1 as preferred or non-preferred. The path statusfield 705 may also identify the path as available or un-available.

In one embodiment, the path identifier 710 identifies a unique path witha storage controller 130 such as the storage controller 130 of FIG. 1.In one embodiment, the path identifier may include a host portidentifier.

The present invention is the first to identify a plurality of pathsincluding a preferred path from a host 105 to a CUI 135 in response to ahost request. In addition, the present invention connects the host 105to the CUI 135 through the preferred path. The present inventionimproves the performance of communication between the host 105 and theCUI 135 by allowing the host 105 to access the CUI 135 through thepreferred path. The present invention may be embodied in other specificforms without departing from its spirit or essential characteristics.The described embodiments are to be considered in all respects only asillustrative and not restrictive. The scope of the invention is,therefore, indicated by the appended claims rather than by the foregoingdescription. All changes which come within the meaning and range ofequivalency of the claims are to be embraced within their scope.

1. An apparatus to access a path, the apparatus comprising: a requestmodule configured to receive a request from a host to identify aplurality of paths from the host to a control unit image through aplurality of redundant interconnection modules each configured toconnect the host to the control unit image; a response module configuredto report each path, each path's status relative to the control unitimage, and an identifier of the request's path to the host; and aconnection module configured to connect the host through the preferredpath to the control unit image.
 2. The apparatus of claim 1, wherein theconnection module is further configured to dynamically reconnect thehost to the control unit image through a path.
 3. The apparatus of claim1, wherein each interconnection module is configured with a plurality ofhost ports and a plurality of storage device ports.
 4. The apparatus ofclaim 3, wherein each interconnection module is in communication throughan internal communication channel with at least one otherinterconnection module and the host port of a first interconnectionmodule is configured to communicate through the first interconnectionmodule and the internal communication channel with a logical device ofthe control unit image managed by a second interconnection module. 5.The apparatus of claim 1, further comprising a detection moduleconfigured to detect a failure of a first interconnection module andwherein the connection module is configured to connect the host througha non-preferred path of a second interconnection module to the controlunit image in response to the detected failure.
 6. The apparatus ofclaim 1, further comprising an initialization module configured toidentify the preferred, non-preferred, and unavailable paths for eachcontrol unit image upon initialization of a storage controller.
 7. Asystem to access a path, the system comprising: a host; a storagecontroller comprising a control unit image comprising a plurality oflogical devices; a plurality of redundant interconnection modules eachconfigured to connect the host to the control unit image through a path;a request module configured to receive a request from the host toidentify a plurality of paths to the control unit image; a responsemodule configured to report each path, each path's status relative tothe control unit image, and an identifier of the request's path to thehost; and a connection module configured to connect the host through thepreferred path to the control unit image.
 8. The system of claim 7,wherein the connection module is further configured to dynamicallyreconnect the host to the control unit image through a path.
 9. Thesystem of claim 7, wherein each interconnection module is configuredwith a plurality of host ports and a plurality of storage device ports.10. The system of claim 9, wherein each interconnection module is incommunication through an internal communication channel with at leastone other interconnection module and the host port of a firstinterconnection module is configured to communicate through the firstinterconnection module and the internal communication channel with atleast one logical device of the control unit image managed by a secondinterconnection module.
 11. The system of claim 7, wherein at least onelogical device is emulated using storage capacity from a portion of atleast one storage device.
 12. The system of claim 7, further comprisinga detection module configure to detect a failure of a firstinterconnection module and wherein the connection module is configuredto connect the host through a non-preferred path of a secondinterconnection module to the control unit image in response to thedetected failure.
 13. The system of claim 7, further comprising aninitialization module configured to identify the preferred,non-preferred, and unavailable paths for each control unit image uponinitialization of the storage controller.
 14. A signal bearing mediumtangibly embodying a program of machine-readable instructions executableby a digital processing apparatus to perform operations to access apath, the operations comprising: receiving a request from a host toidentify a plurality of paths from the host to a control unit imagethrough a storage controller configured with a plurality of redundantinterconnection modules; reporting each path, each path's statusrelative to the control unit image, and an identifier of the request'spath to the host; and connecting the host through the preferred path tothe control unit image.
 15. The signal bearing medium of claim 14,wherein the instructions further comprise operations to dynamicallyreconnect the host to the control unit image through a path.
 16. Thesignal bearing medium of claim 14, wherein each interconnection moduleis configured with a plurality of host ports and a plurality of logicaldevices.
 17. The signal bearing medium of claim 16, wherein eachinterconnection module is in communication through an internalcommunication channel with at least one other interconnection module andthe host port of a first interconnection module is configured tocommunicate through the first interconnection module and the internalcommunication channel with a logical device of the control unit imagemanaged by a second interconnection module.
 18. The signal bearingmedium of claim 14, wherein at least one logical device is emulatedusing storage capacity from a portion of at least one storage device.19. The signal bearing medium of claim 14, wherein the instructionsfurther comprise operations to connect the host through a non-preferredpath of a second interconnection module to the control unit image if thea first interconnection module fails.
 20. The signal bearing medium ofclaim 14, wherein the instructions further comprise operations toidentify the preferred, non-preferred, and unavailable paths for eachcontrol unit image upon initialization of the storage controller.